//方法一：遍历
int maximumCount(int* nums, int numsSize) {
    int n = 0, pos = 0, neg = 0;
    for(int i = 0; i < numsSize; i++){
        if(nums[i] < 0){
            neg++;
        }else if(nums[i] > 0){
            pos++;
        }
    }
    return pos > neg ? pos : neg;
}

//方法二：二分查找
int LowerBound(int *nums, int numsSize, int n){
    int left = 0, right = numsSize - 1;
    while(left <= right){
        int mid = left + (right - left) / 2;
        if(nums[mid] < n){
            left = mid + 1;
        }else{
            right = mid - 1;
        }    
    }
    return left;//返回n 或n大的第一个数的下标
}

int maximumCount(int* nums, int numsSize) {
    int pos = numsSize - LowerBound(nums, numsSize, 1);
    int neg = LowerBound(nums, numsSize, 0);
    return neg > pos ? neg : pos;
}

/*给你一个按 非递减顺序 排列的数组 nums ，返回正整数数目和负整数数目中的最大值。

换句话讲，如果 nums 中正整数的数目是 pos ，而负整数的数目是 neg ，返回 pos 和 neg二者中的最大值。
注意：0 既不是正整数也不是负整数。*/